package br.unb.ida.midialab.pedparq;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class ListaAtividades extends Activity{

	@SuppressWarnings("unused")
	private CursorAdapter dataSource;
	
	private static final String campos[] = {DbHelper.DATE, DbHelper.TEMPO_ATIVIDADE, DbHelper.DISTANCIA};
	
	ListView listView;
	DbHelper dbHelper;
	Cursor cursor = null;
	
	private Utils mUtils;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.atividades);
		listView = (ListView) findViewById(R.id.listaAtividade);
		
		mUtils = Utils.getInstance();
		
		dbHelper = new DbHelper(this);
		dbHelper.getWritableDatabase();
		
		displayData();
		
	}
	
	private void displayData() {
		cursor = dbHelper.obterLista();
		//TODO transformar em objeto
		if (cursor.getCount() > 0){
			dataSource = new SimpleCursorAdapter(this, R.layout.row, cursor, campos, 
					new int[] {R.id.atData, R.id.atDuracao, R.id.atDistancia});
			//listView.setAdapter(dataSource);
			ArrayList<Atividade> listAtividades = cursorToArrayListAt(cursor);
			//ArrayList dados = cursorToArrayList(cursor);
			listView.setAdapter(new CustomAdapter(listAtividades, this));
			
			listView.setOnItemClickListener(new OnItemClickListener(){

				@Override
				public void onItemClick(AdapterView a, View v,
						int position, long id) {
					String idAt =(String) ((TextView) v.findViewById(R.id.textID)).getText();
					prepararDadosChamarResumo(idAt);
			        Toast.makeText(ListaAtividades.this, idAt, Toast.LENGTH_LONG).show();
				}

			});
		}else{
			Toast.makeText(this, "Sem atividades", Toast.LENGTH_SHORT).show();
		}
	}
	private void prepararDadosChamarResumo(String idAt) {
		Atividade atividade = dbHelper.getAtividade(idAt);
		Bundle bAtividade = mUtils.atividadeToBundle(atividade);
		bAtividade.putBoolean("fromLista", true);
		//chama a intent do resumo
    	Intent iResumo = new Intent(this, ResumoAtividade.class);
    	iResumo.putExtras(bAtividade);
    	startActivity(iResumo);
	}


	private ArrayList cursorToArrayList(Cursor cursorDados) {
		ArrayList list = new ArrayList();
		AtividadeDetails at = new AtividadeDetails();
		if (cursorDados != null) {
			cursorDados.moveToFirst();
		    while(!cursorDados.isAfterLast()) {
		        at.setData(String.valueOf(cursorDados.getLong(2)));
		        at.setDistancia(String.valueOf(cursorDados.getFloat(6)));
		        at.setDuracao(String.valueOf(cursorDados.getLong(3)));
		        at.setPontos(String.valueOf(cursorDados.getInt(4)));
		        list.add(at);
		        cursorDados.moveToNext();
		    }
		    cursorDados.close();
		}
		return list;
	}
	
	private ArrayList<Atividade> cursorToArrayListAt(Cursor cursorDados) {
		ArrayList<Atividade> listAt = new ArrayList<Atividade>();
		Atividade at = new Atividade();
		if (cursorDados != null) {
			cursorDados.moveToFirst();
		    while(!cursorDados.isAfterLast()) {
		    	at.setId(cursorDados.getString(0));
		        at.setDate(cursorDados.getLong(2));
		        at.setDistancia(cursorDados.getFloat(6));
		        at.setTempoAtividade(cursorDados.getLong(3));
		        at.setPassos(cursorDados.getInt(4));
		        listAt.add(at);
		        at = new Atividade();
		        cursorDados.moveToNext();
		    }
		    cursorDados.close();
		}
		return listAt;
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		dbHelper.close();
	}
	
}
